在深入實作細節之前,我們先要瞭解系統的架構與功能規劃。
一個良好的架構不僅定義組件與互動,更為後續的擴展、維護與發展指引出一條明確又不崎嶇的道路。
Overview
我們的核心架構與 Stack 包含:
-
Web frontend
- 使用 Next.js 框架開發,部署在 Vercel 上
- 透過 API 與後端服務溝通。
-
Backend service
- 使用 Laravel 開發 API,提供 CRUD 的業務邏輯。
- 部署在 Google Cloud Run,實現無伺服器架構。
- 使用 Google Cloud SQL 管理資料。
-
Search service
- 整合 Algolia 提供搜尋與推薦功能。
- Laravel 後端資料會建立 Algolia 索引以加速取用。
-
Auth Service
- 使用 GCP identity platform 或 Auth0 來管理使用者與第三方登入的業務。
-
Data Crawler
- 收集與更新資料的爬蟲服務,從 podcast feeds 擷取資訊。
- 資料會傳送到後端進行儲存與處理。
-
Speech-to-Text Service
- 使用 Colab 執行 Speech-to-Text 的模型將聲音訊號轉錄成文字。
- 轉錄資料會最佳化供 Algolia 搜尋。
-
Log & Moniter
- 使用 GCP Loggin & Trace 或 Sentry 來建立設施監控或是應用程式效能觀察。
產品功能與測試案例
我們的產品目標是讓使用者更便利地搜尋到符合的 Podcast。所以我們需要一些簡單的 User story 以便測試來確認功能:
User story
- 身為使用者,我可以用關鍵字搜尋 Podcast
- (optional) 身為使用者,我可以以類別/流派瀏覽 Podcast
- 身為使用者,我可以看 Podcast 詳細資料像是集數列表
- 身為使用者,我可以訂閱 Podcast 更新
- 身為使用者,我可以收到新集數通知
- (optional) 身為使用者,我可以看到個人化 Podcast 推薦
- 身為使用者,我可以搜尋 Podcast 集數轉錄的字幕
透過明確的架構規劃與功能定義,就可以開始加速後續服務的建立。
在中間可能會有需要修正,或是發現需要更換工具的情況,所以會在過程中去重複確認情境跟工具的契合度。